package p.ithorns.integration.hazelcast.mqtt;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**
 * @Author: liuhaitao
 * @Date: 2022/8/18 9:04
 * @Description: 网关源数据
 */
@Getter
@Setter
@ToString
@JsonTypeName(value = "GATE")
@NoArgsConstructor
public class GateUp implements BaseRaw {

    /**
     * Gateway_id
     */
    @JsonProperty("gw_id")
    private String gwId;

    /**
     * IF chain
     * 取值0-7
     */
    private int channel;

    /**
     * RF chain
     * 取值 0, 1
     */
    private int rf;

    /**
     * frequency
     * 470000000 – 490000000
     */
    private int freq;

    /**
     * bandwidth
     * 4----125KHz
     */
    private int bw;

    /**
     * Spread factor
     * n(7-12)----SFn，7----SF7
     */
    private int dr;

    /**
     * Coderate
     * 1：4_5
     * 2：4_6
     * 3：4_7
     * 4：4_8
     */
    private int cr;

    /**
     * Channel RSSI
     */
    private float crssi;

    /**
     * Signal RSSI
     */
    private float srssi;

    /**
     * 信噪比
     */
    private float snr;

    /**
     * 标签卡id
     * 4byte十六进制，（card_id为32位的十进制数据，需转为十六进制表示ID）
     */
    @JsonProperty("card_id")
    private long cardId;

    /**
     * 信息序列
     * 标签卡发送帧序列号，1byte无符号整型
     */
    private int fcnt;

    /**
     * 网关时间戳
     */
    private long timestamp;

    /**
     * 标签卡数据
     * 字符串数据，需要解码
     * 标签卡数据域（type+card_bat + beacon data）
     *  Type – 10 为0x10定位帧类型
     *  card_bat – 为标签卡电池电量
     *  Beacon data:
     * -	00a1d005 –信标1的mac地址，d4是信标的RSSI，b7是信标的电压
     * -	00a1d009 -信标2的mac地址，ce是信标的RSSI，b7是信标的电压
     * -	以此类推；具体协议参见 {@link BeaconRaw}
     */
    private String data;


    @Override
    public String getId() {
        return this.gwId;
    }
}
